package com.tac.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tac.common.result.Result;
import com.tac.pojo.Integral;
import com.tac.pojo.vo.IntegralVo;
import com.tac.service.IntegralService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RequestMapping("/integral")
@RestController
@CrossOrigin
@Api(tags = "积分系统")
public class IntegralController {

    @Autowired
    private IntegralService integralService;


    /**
     * 管理员查看所有积分明细
     * @return
     */
    @ApiOperation("管理员查看所有积分明细")
    @GetMapping("/{page}/{pagesize}")
    public Result<Page<Integral>> selectAll(@PathVariable Long page, @PathVariable Long pagesize){
        return integralService.selectAll(page,pagesize);
    }

    /**
     * 管理员修改积分记录
     * @param integral
     * @return
     */
    @ApiOperation("管理员修改积分记录")
    @PutMapping
    public Result updateIntegral(@RequestBody Integral integral){
        return integralService.updateIntegral(integral);
    }
    /**
     * 管理员新增积分记录
     * @param integral
     * @return
     */
    @ResponseStatus(HttpStatus.CREATED)
    @ApiOperation("管理员新增积分记录")
    @PostMapping
    public Result insertIntegral(@RequestBody Integral integral){
        return integralService.insertIntegral(integral);
    }
    /**
     * 管理员批量删除
     * @param longs
     * @return
     */
    @ResponseStatus(HttpStatus.NO_CONTENT)
    @ApiOperation("管理员批量删除")
    @DeleteMapping
    public Result deleteIntegral(@RequestParam List<Long> longs){
        return integralService.deleteIntegral(longs);
    }
    /**
     * 用户查看自己的积分明细(前十条)
     * @param uid
     * @return
     */
    @GetMapping("/{uid}")
    @ApiOperation("用户查看自己的积分明细(前十条)")
    public Result<IntegralVo> selectByUserTen(@PathVariable Long uid){
        return integralService.selectByUserTen(uid);
    }
    /**
     * 用户查看自己的积分明细所有
     * @param uid
     * @return
     */
    @GetMapping("/{uid}/{page}/{pagesize}")
    @ApiOperation("用户查看自己的积分明细所有")
    public Result<IntegralVo> selectByUser(@PathVariable Long uid,@PathVariable Long page,@PathVariable Long pagesize){
        return integralService.selectByUser(uid,page,pagesize);
    }

}
